Not Applicable.
The present embodiments relate to universal serial bus (xe2x80x9cUSBxe2x80x9d) systems, and are more particularly directed to code overlay from a USB host to a peripheral.
USB is a recently-developed technology established by a joint effort of various companies. The joint-effort produced a USB Specification, Revision 1.1, Sep. 28, 1998, which is hereby incorporated herein by reference and which governs many aspects about USB systems. The USB Specification is directed to a goal of improving the user-friendliness of various aspects of computers and the peripheral devices typically used with such computers. Particularly, in a USB system, various devices connected in the prior art to a computer via either internal buses or often different external connectors are now coupled, using a USB cable, to a common USB bus. The USB bus is mastered by a USB host in a manner that requires little or no configuration by the user. Various benefits arise in USB, including the ability to add devices to, or remove devices from, a USB system while the system is operating. As another benefit, USB easily integrate various functions such as raw data, voice data, and video data. These benefits are also achieved without requiring add-on cards, and through a single protocol that supports serial data transfers between a USB host and USB-operable peripherals simply by coupling those peripherals to a common USB bus. Still further, the ability to quickly and easily connect and disconnect devices provides considerable flexibility and possible cost reduction in comparison to many contemporary systems.
While USB systems provide the various benefits set forth above, the present inventors have recognized a potential drawback in USB functions relating to device size, complexity, and cost as these factors are influenced by the program code demands of the function. Specifically, a function typically includes a processor device (e.g., a digital signal processor or xe2x80x9cDSPxe2x80x9d) for providing the capabilities of the function (e.g., communications for a modem). The processor device accesses either on-chip memory or external memory for purposes of obtaining and executing program code to implement the function""s capabilities. Further in this regard, and according to the USB Specification, at start-up of the USB device the USB host may perform a one-time download of the entire set of executable program code to the function via a bulk-type endpoint in the function. However, typically more complex capabilities bring a corresponding increase in the amount of required program code and, hence, the start-up download of program code requires a corresponding increase in the size of the memory in the function to which the program code is downloaded (either on-chip or external). In view of these limitations, there arises a need to improve the efficiency of program code demands in a USB function, as is achieved by the preferred embodiments described below.
In the preferred embodiment, there is a USB function device for coupling to a USB host. The USB function device comprises circuitry for providing a capability to the USB host, where the circuitry for the capability comprises an address space. The USB function device further comprises a USB interface circuit coupled between the USB host and the circuitry for providing a capability to the USB host. The USB interface circuit comprises a memory area comprising a code overlay endpoint accessible to the USB host for writing two or more code blocks to the code overlay endpoint. The USB interface circuit further comprises circuitry, for communicating a first of the code blocks from the code overlay endpoint to the address space and for subsequently communicating a second of the code blocks from the code overlay endpoint to the address space. The circuitry for communicating is operable to communicate a code block from the code overlay endpoint to the address space after a start-up time of the USB function device.